システムログに Cannot open access to console, the root account is locked. のエラーが出力され接続できない
困っていた内容
インスタンスに接続しようとしても応答がありません。
コンソールからシステムログを確認すると「Cannot open access to console, the root account is locked.」との出力がありました。
どのように対応をすれば良いですか。
どう対応すればいいの?
「Cannot open access to console, the root account is locked.」のエラーの場合、fstab の記述が間違っている可能性が高いです。
そのため、まずは調査用インスタンスを用意し、そちらで対象インスタンスのルートボリュームの調査をしていきましょう。
実際のコンソール上のシステムログの出力は、以下のようなものです。
この状態ではステータスチェックには成功しますが、接続しようとしてもプロンプトすら返ってこない状態となります。
そこで、新たに調査用インスタンスを立て、起動できないインスタンスのルートボリュームをセカンダリとしてアタッチ/マウントしました。
調査用インスタンスで対象ボリュームの中身を確認するには、以下記事の手順をご参考ください。
※マウント時に以下のような「wrong fs type, bad option, bad superblock on...」のエラーが出た場合には、「-o nouuid」のオプションをつけることで一時的にエラーを無視してマウントすることが可能です。
マウントしたので /mnt/ebs/etc/fstab の中身を見てみましょう。
上記では 3 行目に /data として記述が追加されていますね。
今回はエラーを発生させるためにわざと UUID を 1 文字削っています。
行自体を削除してしまっても大丈夫ですが、今回はオプションとして nofail を追加してみます。
このオプションがあれば、この行の記述が間違っていてもインスタンスの起動に問題は起こりません。
修正しました。
この状態でボリュームを元のインスタンスにアタッチしなおして接続を試してみましょう。
正常に接続できるようになりました。(なぜか初回の起動時にはステータスが保留中のまま起動してこなかったので、一度停止/起動を挟んでいます)
fstab の内容もそのままなので、適宜正しい内容に修正してください。
まとめ
対応内容は以上となります。
以下の AWS ドキュメントにもあります通り、fstab へ記述する場合には nofail のオプションを追加するようにすれば今回のようなエラーは防ぐことができますので、ご留意いただければ幸いです。